//Source file: C:\\javier\\mario\\Java\\taladro\\vista\\proyecto\\ContProyecto.java

package taladro.vista.proyecto;

import taladro.proyecto.Proyecto;
import taladro.proyecto.ProyectoListener;
import java.awt.FileDialog;
import taladro.AppTaladro;
import java.io.File;
import javax.swing.JInternalFrame;
import taladro.instrucciones.Instruccion;
import java.awt.Dimension;
import taladro.vista.aplicacion.ContApp;
import taladro.maquina.*;
import javax.swing.JDialog;
import taladro.proyecto.TraductorArchivoDrill;
import taladro.proyecto.TraductorArchivoGerber;

public class ContProyecto implements MenuProyectoListener, ProyectoListener
{
   public PanelProyecto panelProyecto;
   public PanelPreview panelVistaPrevia;
   public JInternalFrame frame;
   public JInternalFrame framePreview;
   public Proyecto proyecto;
   
   /**
    * @roseuid 3F40570E01EB
    */
   public ContProyecto() 
   {
    
   }
   
   /**
    * @roseuid 3F40570E0213
    */
   public void abrirProyecto() 
   {
/*       Frame frame = AppTaladro.getApp().contApp.frameApp;
       FileDialog fileDialog = new FileDialog(frame, "Abrir proyecto...", FileDialog.LOAD);
        fileDialog.show();
        if (fileDialog.getFile() == null)
            return;
        String fileName = fileDialog.getDirectory() + File.separator + fileDialog.getFile();        
        proyecto.cargaArchivo( fileName );*/
       
        taladro.proyecto.TraductorArchivo traductor = null;
        java.awt.Frame frame = AppTaladro.getApp().contApp.frameApp;
        FileDialog fileDialog = new FileDialog(frame, "Abrir proyecto...", 0);
        fileDialog.show();
        if(fileDialog.getFile() == null)
        {
            return;
        }
        String fileName = (fileDialog.getDirectory()) + File.separator + fileDialog.getFile().toString();
        JDialog dialog = new JDialog(AppTaladro.getApp().contApp.frameApp, "Tipo de Proyecto", true);
        PanelProySel panelProySel = new PanelProySel();
        dialog.getContentPane().add(panelProySel);
        panelProySel.dialog = dialog;
        dialog.pack();
        dialog.show();
        if(panelProySel.aceptar)
        {
            if(panelProySel.archDrill)
            {
                traductor = new TraductorArchivoDrill();
            } else
            {
                traductor = new TraductorArchivoGerber();
            }
        } else
        {
            return;
        }
        proyecto.cargaArchivo(fileName, traductor);

   }
   
   /**
    * @roseuid 3F40570E023B
    */
   public void datosProyecto() 
   {
       ContApp contApp = AppTaladro.getApp().contApp;
       if( panelProyecto == null ){
           panelProyecto = new PanelProyecto();
           frame = new JInternalFrame("Propiedades del proyecto");
           frame.getContentPane().add(panelProyecto);
           frame.setSize(300,300);
           frame.setClosable(true);
           frame.setIconifiable(true);
           frame.setResizable(true);                      
       }
       frame.show();
       contApp.addComponentFrame(frame);
       vistaPreviaProyecto();
       Instruccion instruccion = proyecto.getAdminInstrucciones().getInstruccionActual();
       if( instruccion == null ){           
           panelProyecto.actDatosProyecto(0.0, 0.0);
           panelProyecto.actDatosInst(0, "N/A");
           panelProyecto.actDatosHerr(0, "N/A");
       }
       else{
           Dimension dim = new Dimension();
           proyecto.getDimProyecto(dim);
           panelProyecto.actDatosProyecto(dim.width,dim.height);
           
           Herramienta herramienta = this.proyecto.getHerramientaAct();
           int numHerr = proyecto.getHerramientas().size();
           int numInst = proyecto.getAdminInstrucciones().getTotalInstrucciones();
           if( numHerr > 0 ){
               panelProyecto.actDatosHerr(numHerr, "");
           }           
           else
               panelProyecto.actDatosHerr(numHerr,herramienta.toString() );
           panelProyecto.actDatosInst( numInst , instruccion.toString() );
       }
   }
   
       public void vistaPreviaProyecto()
    {
        ContApp contApp = AppTaladro.getApp().contApp;
        if(panelVistaPrevia == null)
        {
            panelVistaPrevia = new PanelPreview(proyecto);
            //panelVistaPrevia.proyecto = proyecto;
            framePreview = new JInternalFrame("Vista previa del proyecto");
            framePreview.getContentPane().add(panelVistaPrevia);
            framePreview.setSize(500, 500);
            framePreview.setClosable(true);
            framePreview.setIconifiable(true);
            framePreview.setResizable(true);
        }
        //framePreview.show();
        panelVistaPrevia.refreshZoom();
        framePreview.setVisible(true);
        contApp.addComponentFrame(framePreview);
    }

   
   /**
    * @roseuid 3F40570E0264
    */
   public void iniciarProyecto()
   {
       proyecto.iniciar();
   }
   
   /**
    * @roseuid 3F40570E028C
    */
   public void pararProyecto() 
   {
       proyecto.parar();
   }
   
   /**
    * @param proyecto
    * @roseuid 3F4078E500E4
    */
   public void setProyecto(Proyecto proyecto)
   {
       this.proyecto = proyecto;
       proyecto.addListener(this);
   }
   
   /**
    * @return taladro.proyecto.Proyecto
    * @roseuid 3F4078F801BD
    */
   public Proyecto getProyecto() 
   {
    return proyecto;
   }
   
   /*
   public void cambioHerramienta(He) {
       panelProyecto.actDatosHerr(  proyecto.getHerramientas().elementAt(index).toString() );
       proyecto.indexHerrAct = index;
   }*/
   
   public void cambioInstruccion(int index) {
       Instruccion inst = proyecto.getAdminInstrucciones().getInstruccionActual();
       if(inst != null )
            panelProyecto.actDatosInst( inst.toString() ) ;
       else
            panelProyecto.actDatosInst( "N/A" ) ;
   }
   
   public void cambioHerramienta(Herramienta herramienta) {
       panelProyecto.actDatosHerr( herramienta.toString() );
       JDialog dialog = new JDialog(AppTaladro.getApp().contApp.frameApp,"Cambio de Herramienta",true);
       PanelHerramienta panelHerramienta = new PanelHerramienta();
       dialog.getContentPane().add( panelHerramienta );
       panelHerramienta.dialog = dialog;
       panelHerramienta.setNombreHerramienta(herramienta.getNombre() );
       dialog.setLocationRelativeTo(AppTaladro.getApp().contApp.frameApp);
       dialog.pack();
       dialog.show();
       herramienta.setLargo( panelHerramienta.getAltoHerramienta() );
       //System.out.println( "Alto de la herramienta " +  panelHerramienta.getAltoHerramienta() );
       //JOptionPane joption = new JOptionPane("Herramienta " + panelHerramienta.getAltoHerramienta() );
       //joption.showMessageDialog(AppTaladro.getApp().contApp.frameApp ,"JHerramienta " + panelHerramienta.getAltoHerramienta() );
   }
   
   public void reiniciarProyecto() {
       pararProyecto();
       proyecto.reiniciar();
       datosProyecto();
   }
   
}

